<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Write Avisynth Filter</title>
<link rel="stylesheet" type="text/css" href="../../avisynth.css">
</head>
<body >
<h2>WriteFile / WriteFileIf / WriteFileStart / WriteFileEnd</h2>
<p><code>WriteFile </code>(<var>clip, string filename, <i>string expression1, 
  ... , string expression16, bool &quot;append&quot;, bool &quot;flush&quot;</i></var>)<br>
  <code>WriteFileIf </code>(<var>clip, string filename, <i>string expression1, 
  ... , string expression16, bool &quot;append&quot;, bool &quot;flush&quot;</i></var>)<br>
  <code>WriteFileStart </code>(<var>clip, string filename, <i>string expression1, 
  ... , string expression16, bool &quot;append&quot;</i></var>)<br>
  <code>WriteFileEnd </code>(<var>clip, string filename, <i>string expression1, 
  ... , string expression16, bool &quot;append&quot;</i></var>)</p>
<p><code>WriteFile</code> calcola <var>expressionN</var>, converte il risultato 
  in una stringa e mette il risultato in un file.<br>
</p>
<p>La variabile &quot;run-time&quot; <var>current_frame</var> &egrave; impostata 
  in modo tale che si possa usare in una &quot;expression&quot;<br>
  (questo funziona in modo analogo di <var>ScriptClip</var>, per maggiori info 
  guardare la sua documentazione).<br>
  <var>current_frame</var> &egrave; impostato a -1 quando lo script &egrave; caricato 
  e a -2 quando &egrave; chiuso.</p>
<p><code>WriteFile</code> genera un output ad ogni frame, <code>WriteFileIf</code> 
  genera un output solo se la prima espressione &egrave; <code>true</code>, non 
  c'&egrave; output al momento dell'apertura dello script o alla sua chiusura.<br>
  <code>WriteFileStart</code> e <code>WriteFileEnd</code> generano output solo 
  al momento dell'apertura dello script o alla sua chiusura, nessuna azione ad 
  ogni frame.</p>
<p>Quando <var>append</var> = <code>true</code>, il risultato sar&agrave; accodato 
  ad un file esistente.<br>
  Quando <var>flush</var> = <code>true</code>, il file &egrave; chiuso e riaperto 
  dopo ogni operazione in modo tale che si pu&ograve; verificare il risultato 
  immediatamente.<br>
  Per <code>WriteFileStart</code> e <code>WriteFileEnd</code> <var>flush</var> 
  &egrave; sempre <code>true</code>.<br>
  Il default per <var>append</var> &egrave; sempre <code>true</code>, ecceto che 
  per <code>WriteFileStart</code> (dove &egrave; <code>false</code>).</p>
<h4>Il tutto &egrave; meglio spiegato con qualche esempio:</h4>

      
<pre>filename = &quot;c:\myprojects\output.txt&quot;
# create a test video to get frames
Version()

# l' espressione qui &egrave; solo una variabile, che &egrave; attualizzata ed inserita nel file
# si ottiene un file col framenumber in ogni linea
WriteFile(filename, &quot;current_frame&quot;)

# qu &egrave; scritta una riga all'apertura dello script
WriteFileStart(filename, &quot;&quot;&quot; &quot;This is the header&quot; &quot;&quot;&quot;)

# e qui quando viene chiuso
WriteFileEnd(filename, &quot;&quot;&quot; &quot;Now the script was closed&quot; &quot;&quot;&quot;)</pre>
    
<p>Osservate come si possono usare le triple-quotes per digitare una stringa in 
  una stringa!</p>
<p>Se l'espressione non pu&ograve; essere attualizzata, al suo posto &egrave; 
  scritto un messaggio di errore.<br>
  Nel caso succeda ci&ograve; con If-expression in <code>WriteFileIf</code> il 
  risultato si assume sia <code>true</code>.</p>
<pre># ne risulta un &quot;I don't know what &quot;this&quot; means&quot;
WriteFile(filename, &quot;this is nonsense&quot;)</pre>
    <hr>
<h4><b>Ci sono modi pi&ugrave; facili di scrivere numeri in un file, MA:</b></h4>
<p>... con questo esempio vedete come si usano le &quot;runtime functions&quot; 
  assieme a FrameEvaluate:</p>
      
<pre># 
Version.FadeIn(50).ConvertToYV12
# questo stampa il frame number, un &quot;:&quot; ed il luma medio 
colon = &quot;: &quot;
WriteFile(&quot;F:\text.log&quot;, &quot;current_frame&quot;, &quot;colon&quot;, &quot;AverageLuma&quot;)</pre>
    
<p>O forse volete stampato anche l' actual time:</p>
      
<pre># create a test video to get different frames
Version.FadeIn(50).ConvertToYV12
# questo stampa il frame number, il current time e l'average luma 
# le triple quotes sono necessarie per inserire quotes dentro una stringa
WriteFile(last, filename, &quot;current_frame&quot;, &quot;&quot;&quot; time(&quot; %H:%M:%S&quot;) &quot;&quot;&quot;, &quot;AverageLuma&quot;)</pre>
<hr>
<h4>Ulteriori esempi:</h4>
<p>In <code>WriteFileIf</code> la PRIMA espressione deve essere boolean (true 
  o false).<br>
  Solo se essa &egrave; TRUE vengono attualizzate le altre espressioni e viene 
  stampata una riga.<br>
  (Ricordare: &amp;&amp; &egrave; AND, || &egrave; OR, == &egrave; EQUAL, != &egrave; 
  NOT EQUAL)<br>
</p>
      
<pre># create a test video to get different frames
Version.FadeIn(50).ConvertToYV12
# questo stampa il frame number, ma solo dei frames in cui AverageLuma &egrave; tra 30 e 60
WriteFileIf(last, filename, &quot;(AverageLuma&gt;30) &amp;&amp; (AverageLuma&lt;60)&quot;, &quot;current_frame&quot;, &quot;&quot;&quot; &quot;:&quot; &quot;&quot;&quot;, &quot;AverageLuma&quot;)</pre>
<p><kbd>$Date: 2004/10/03 21:26:01 $</kbd></p>
<FORM>
  <input type="Button" value="Indietro"
onClick="history.go(-1)" name="Button">
</form>
</body>
</html>
